// response.go
package api

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// Response 定义统一的 JSON 响应结构
type Response struct {
	Code    int         `json:"code"`
	Message string      `json:"message"`
	Data    interface{} `json:"data,omitempty"` // omitempty 表示如果为 nil 则不显示该字段
}

// Success 成功响应
func Success(c *gin.Context, data interface{}) {
	c.JSON(http.StatusOK, Response{
		Code:    http.StatusOK,
		Message: "success",
		Data:    data,
	})
}

// Error 错误响应
func Error(c *gin.Context, code int, message string) {
	c.AbortWithStatusJSON(code, Response{
		Code:    code,
		Message: message,
		Data:    nil,
	})
}

// BadRequest 返回 400 Bad Request 错误
func BadRequest(c *gin.Context, err error) {
	Error(c, http.StatusBadRequest, err.Error())
}

// InternalServerError 返回 500 Internal Server Error
func InternalServerError(c *gin.Context, err error) {
	Error(c, http.StatusInternalServerError, err.Error())
}
